Flex、Grid
Grid
grid-auto-flow: column:橫式的排列顯示或直接寫grid-template-columns- 預設
grid-auto-flow: row由上到下排序 - 後面可以多寫
dense參數讓網格優先考慮填滿,而不是依據原本的順序
- 預設
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)):定義每一欄寬,讓內容自己以適合的數量顯示- repeat 裡面可以寫
auto-fit、auto-fill,差別在於auto-fit會填滿 container,但auto-fill不會(範例);或直接寫數字代表重複幾次repeat(3, 1fr),定義每一列寬,讓網格限定重複 3 次,每個都是一等份,也可以寫成repeat(3, 20px 10px 30px)就會先顯示 20px → 10px → 30px → 20px…. - 後者參數寫
minmax(100px, 1fr)代表最小寬度為 100px,最大則為一等分;minmax(100px, auto) 限定最小為 100px,最大則是 autoinfofr 為 fraction 中文是分數的意思,用在 grid 裡可以想成是幾等份
grid-template-columns: 20px repeat(3, 1fr) 20px代表最左及最右是分別 20px 的欄位,中間則平均分配 3 等份的欄位grid-template-columns: 75px 3fr 2fr代表第一欄位佔 75px 寬,後面剩餘寬度平均分成 5 等分,分別佔據 3 等分及 2 等分
- repeat 裡面可以寫
grid-template-rows定義每一列行高grid-template為縮寫,例如grid-template: repeat(3, 1fr) / repeat(3, 1fr)前者代表grid-template-rows;後者代表grid-template-columnsgrid-auto-columns: 100px讓網格寬 100pxgrid-auto-rows: 100px讓網格長 100pxgrid-template-areas定義每格的名稱,一行一個字串,用空白區隔grid-column: span 2代表此欄位佔據兩格- 為
grid-column-start及grid-column-end的縮寫 - 可直接用
grid-column: auto / span 2分別寫,前者代表grid-column-start後者為grid-column-end,如果只寫一個參數就代表是grid-column-start,另外grid-column-end則為 auto grid-column: 1 / 3代表從 1 開始顯示到 2 的位置- 寫 -1 代表從最後開始
- 為
grid-area可以填寫四個數值,分別代表grid-row-start、grid-column-start、grid-row-end、grid-row-start,用 / 分隔開,例如grid-area: 1 / 1 / 1 / 1;gap設定間距,分別為column-gap和row-gap的縮寫,例如gap: 10px 20px,讓左右間距為 10px;上下間距為 20pxjustify-content設定行的左右位置,可填入start、end、center、left、right、space-between、space-evenly、space-around;align-items設定行的上下位置,可填入baseline、start、end、stretch、center,order數值越大排序越後面,預設order: 0,0 會排在 1 前面
.container {
grid-template-areas:
"a b c d e"
"f g h i j"
"k l m n o";
}
Flex
- 子層設定 margin 後會將剩餘空間分配到 margin 去,所以可以
margin-left: auto讓項目置右 - 子層設定的 margin 會大於父層設定的
justify-content或align-items
參考資料
- 探秘 flex 上下文中神奇的自动 margin
- 最全~ Grid vs Flex
- Top 10 Advanced CSS Responsive Design Concepts You Should Know
- [Day19] grid-template 屬性之 rows/columns
- [Day20] grid-template 屬性之 areas
- [Day21] grid-auto 屬性之 flow
- [Day22] grid-auto 屬性之 rows/columns
- [Day24] grid gap 相關屬性
- [Day25] grid 容器對齊屬性
- GRID GARDEN
- MDN - grid-template
- A Complete Guide to CSS Grid